
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Redis 服务器崩溃了，应该如何优化？ - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>Redis 服务器崩溃了，应该如何优化？ - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">Redis的AOF持久化机制是如何工作的，以及如何配置它来平衡数据安全性和性能？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">AOF (Append Only File) 通过记录每个写操作来减少数据丢失。可以配置 `appendonly yes` 启用该功能，并通过 `appendfsync` 参数调整同步策略，例如 `everysec` 可以在性能和数据安全之间取得较好的平衡。</div>
          </div>
          <div class="card-source">来源: 1. b. AOF (Append Only File)</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">配置</div>
          <div class="card-question">为了防止Redis因内存耗尽而崩溃，应该如何配置内存管理策略？请举例说明。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">配置</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">应设置合理的 `maxmemory` 限制来规定最大内存使用量，并配置适当的 `maxmemory-policy` 策略来处理内存溢出。例如：`maxmemory 2gb` 和 `maxmemory-policy allkeys-lru`。</div>
          </div>
          <div class="card-source">来源: 2. a. 内存管理</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">Redis Sentinel 在高可用性架构中扮演什么角色？它是如何确保服务持续可用的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Redis Sentinel 负责监控 Redis 实例的健康状态。当主节点发生故障时，Sentinel 能够自动进行故障转移，将一个从节点提升为新的主节点，从而确保 Redis 服务的持续可用性。</div>
          </div>
          <div class="card-source">来源: 3. b. Redis Sentinel</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">配置</div>
          <div class="card-question">什么是AOF重写（AOF rewrite）？如何配置自动触发该机制？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">配置</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">AOF重写是用于减少AOF日志文件大小的机制。可以通过配置 `auto-aof-rewrite-min-size` 和 `auto-aof-rewrite-percentage` 参数来自动触发重写。例如，当文件大小达到64mb且增长了100%时触发。</div>
          </div>
          <div class="card-source">来源: 1. b. AOF (Append Only File)</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">Redis的主从复制模式如何提高系统的可靠性和实现负载均衡？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">主从复制通过将数据在多个节点上创建备份来提高可靠性。主节点处理写操作，而从节点可以处理读操作，这样可以将读请求分散到多个从节点，从而实现负载均衡。</div>
          </div>
          <div class="card-source">来源: 3. a. 主从复制</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">安全</div>
          <div class="card-question">为保护Redis服务器免受未授权访问和网络攻击，文档中提到了哪两种核心安全措施？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">安全</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档提到了两种核心措施：一是访问控制，通过设置密码（`requirepass`）和IP白名单来限制访问；二是网络安全，通过将Redis部署在受控网络、使用防火墙和网络隔离来防止外部攻击。</div>
          </div>
          <div class="card-source">来源: 5. a. 访问控制 和 5. b. 网络安全</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">与RDB相比，AOF持久化在数据安全性方面有何优势？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">AOF通过记录服务器执行的每一个写操作命令来持久化数据，相比于RDB按时间间隔生成快照，AOF可以配置为更频繁地同步数据到磁盘（例如每秒一次），因此在发生崩溃时能显著减少数据丢失。</div>
          </div>
          <div class="card-source">来源: 1. b. AOF (Append Only File)</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">Redis集群模式（Cluster Mode）是如何提升系统的容错性和扩展性的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Redis集群模式通过数据分片（sharding）将数据分散到多个节点，从而提升了系统的扩展性。同时，集群可以在某个节点发生故障时进行自动故障转移，保证了系统的容错性。</div>
          </div>
          <div class="card-source">来源: 3. c. 集群模式</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">为了及时发现并处理Redis的性能问题，文档建议采取哪些监控和预警措施？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档建议部署实时监控工具（如Redis Monitor、Prometheus、Grafana）来监控关键性能指标，并配置自动化预警机制，以便在服务器出现异常或崩溃时及时通知运维人员或触发自动恢复操作。</div>
          </div>
          <div class="card-source">来源: 4. a. 实时监控 和 4. b. 自动预警</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
